package algorithm.leetcode.medium;

/*
 给定一个整数数组 nums，其中恰好有两个元素只出现一次，其余所有元素均出现两次。 找出只出现一次的那两个元素。
 */

/**
 * @author jack.wu
 * @version 1.0
 * @date 2020/12/22
 */
public class Question260 {

    public static void main(String[] args) {
        Question260 question = new Question260();
        int[] nums = {22, 11};
        int[] ints = question.singleNumber(nums);
        System.out.println(ints);

    }

    public int[] singleNumber(int[] nums) {
        int ans = 0;
        for (int n : nums) {
            ans ^= n;
        }
        int mask = ans & (-ans);

        int[] res = new int[2];
        for (int n : nums) {
            if ((n & mask) == 0) {
                res[0] ^= n;
            }else {
                res[1] ^= n;
            }
        }
        return res;
    }
}
